package com.weijian.service;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.InputStream;

/**
 * MinIO文件存储服务接口
 */
public interface MinIOService {
    
    /**
     * 上传MultipartFile到MinIO
     * @param file 上传的文件
     * @param objectName 对象名称（路径）
     * @return 文件访问URL
     */
    String uploadFile(MultipartFile file, String objectName);
    
    /**
     * 上传File到MinIO
     * @param file 上传的文件
     * @param objectName 对象名称（路径）
     * @return 文件访问URL
     */
    String uploadFile(File file, String objectName);
    
    /**
     * 上传输入流到MinIO
     * @param inputStream 输入流
     * @param objectName 对象名称（路径）
     * @param contentType 内容类型
     * @param size 文件大小
     * @return 文件访问URL
     */
    String uploadFile(InputStream inputStream, String objectName, String contentType, long size);
    
    /**
     * 获取文件的预签名URL
     * @param objectName 对象名称
     * @return 预签名URL
     */
    String getPresignedUrl(String objectName);
    
    /**
     * 删除文件
     * @param objectName 对象名称
     * @return 是否删除成功
     */
    boolean deleteFile(String objectName);
    
    /**
     * 检查文件是否存在
     * @param objectName 对象名称
     * @return 是否存在
     */
    boolean exists(String objectName);
}